<?

require ("usenet.db.php");
define('QUEUE_DATA', '/var/www/temp/queue');
define('ARTICLE_MAX', 15000);
function gen_uuid() {
    return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        // 32 bits for "time_low"
        mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),

        // 16 bits for "time_mid"
        mt_rand( 0, 0xffff ),

        // 16 bits for "time_hi_and_version",
        // four most significant bits holds version number 4
        mt_rand( 0, 0x0fff ) | 0x4000,

        // 16 bits, 8 bits for "clk_seq_hi_res",
        // 8 bits for "clk_seq_low",
        // two most significant bits holds zero and one for variant DCE1.1
        mt_rand( 0, 0x3fff ) | 0x8000,

        // 48 bits for "node"
        mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
    );
}

function SetProgress($id, $max, $value, $state, $caption="", $extra=NULL) 
{
    $queuePath = QUEUE_DATA . "/{$id}.queue";
    $breakPath = QUEUE_DATA . "/{$id}.break";
    if (file_exists($breakPath)) {
        unlink ($breakPath);
        return true;
    }
    $data = array('id'      => $id,
                   'max'     => $max,
                   'value'   => $value,
                   'state'   => $state,
                   'caption' => $caption);
    $Request   = array();
    $Request[] = "<Request>";
    while (list($name, $value) = each ($data)) {
        $Request[] = "<{$name}><![CDATA[{$value}]]></{$name}>";
    }
    if (is_array($extra)) {
        while (list($name, $value) = each ($extra)) {
            $Request[] = "<{$name}><![CDATA[{$value}]]></{$name}>";
        }
    }
    $Request[] = "</Request>";
    $Request = implode ("\n", $Request); 

    file_put_contents($queuePath, $Request);

    return NULL;
}
